﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TekaMUD.Engine.Blocks
{
	public enum GameObjectArticle
	{
		a,
		an
	}

	/// <summary>
	/// Super class for every type of object that exists in gameplay, offering basic ID, registration and locking capabilities.
	/// </summary>
	/// <example>It may represent a Player, a room or even a Door.</example>
	public abstract class GameEntity
	{
		private Guid uid;

		/// <summary>
		/// Syncronization root for all instances of derived classes
		/// </summary>
		protected Object SyncRoot = new object();

		/// <summary>
		/// Global UID to identify this entity.
		/// </summary>
		public Guid UID 
		{
			get
			{
				return uid;
			}
			set
			{
				uid = value;		
			}
		}

		public GameEntity()
		{
			uid = Guid.NewGuid();
		}
	}
}
